/*
 * Torre.h
 *
 *  Created on: 20/04/2013
 *      Author: gonzalo
 */

#ifndef TORRE_H_
#define TORRE_H_

#include "Figure.h"
#include "CuboTorre.h"
#include "Cube.h"
class Torre : public Figure {
private:
	CuboTorre * cubos_base[15];
	Cube * cubo_cabina;
	Cube * cubo_contrapeso;
	CuboTorre * cubos_grua[15];
	Cube * cubos_final_grua[5];
	GLfloat angulo_rotacion_grua;
	GLfloat altura_cabina;
	GLfloat ancho_cabina;

	void draw_base(GLuint program, glm::mat4 & world_matrix);
	void draw_grua(GLuint program, glm::mat4 & world_matrix);

public:
	Torre(GLuint program,GLfloat largo_cubos,GLfloat ancho_cubos);
	virtual ~Torre();

	virtual void draw(GLuint program, glm::mat4 & world_matrix);

	void girar_grua(GLfloat angulo_giro);
	void establecer_angulo(GLfloat angulo_giro);
	GLfloat get_angulo_grua();

	glm::vec3 get_camera_position(glm::mat4 & world_matrix);

	void set_color(const glm::vec3 & color);
};

#endif /* TORRE_H_ */
